package com.jeeplus.test.sysTemplate.controller;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jeeplus.test.jlnu.xlsxManage.service.JlnuXlsxManageService;
import com.jeeplus.test.sysTemplate.domain.FieldInfo;
import com.jeeplus.test.sysTemplate.domain.SysTemplateInfo;
import com.jeeplus.test.sysTemplate.domain.SysTemplateTreeNode;
import com.jeeplus.test.sysTemplate.service.SysTemplateService;
import com.jeeplus.test.tools.resp.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@Api(tags = "系统模板")
@RestController
@Slf4j
@RequestMapping("/sysTemplateInfo")
public class SysTemplateController {

    @Autowired
    private SysTemplateService sysTemplateService;

    @Autowired
    private JlnuXlsxManageService jlnuXlsxManageService;

    @ApiOperation("系统模板查询")
    @GetMapping("/page")
    public Page<SysTemplateInfo> getSysTemplateInfoPage(SysTemplateInfo sysTemplateInfo, @RequestParam(defaultValue = "1") int pageNum,
                                                          @RequestParam(defaultValue = "10") int pageSize) {
        Page<SysTemplateInfo> page = new Page<>(pageNum, pageSize);
        Page<SysTemplateInfo> pageResult = sysTemplateService.getSysTemplateInfoPage(sysTemplateInfo, page);
        return pageResult;
    }

    @ApiOperation("系统模板树结构查询")
    @GetMapping("/treeData")
    public ResponseEntity<List <SysTemplateTreeNode>> getSysTemplateInfoTreeData(SysTemplateInfo sysTemplateInfo) {
       List<SysTemplateTreeNode> sysTemplateTreeNodes = sysTemplateService.getSysTemplateInfoTreeData(sysTemplateInfo);
        return ResponseEntity.ok ( sysTemplateTreeNodes );
    }

    @ApiOperation("系统模板新增")
    @PostMapping("/save")
    public R<Boolean> save(@RequestBody SysTemplateInfo templateInfo) {
        if(sysTemplateService.saveTemplateInfo(templateInfo)){
            return R.suc();
        }
        return R.error("9999","模板名称已存在");

    }

    @ApiOperation("系统模板修改")
    @PostMapping("/update")
    public R<Boolean> update(@RequestBody SysTemplateInfo templateInfo) {
        if(sysTemplateService.updateTemplateInfo(templateInfo)){
            return R.suc();
        }
        return R.error("9999","模板名称已存在");
    }

    @GetMapping("/delete")
    public R<Boolean> delete(@RequestParam String id) {
        return R.suc(sysTemplateService.deleteTemplateInfo(id));
    }

    @GetMapping("/getById")
    public R<SysTemplateInfo> getById(@RequestParam String id) {
        return R.suc(sysTemplateService.getTemplateInfoById(id));
    }

    @ApiOperation("查询转为对象返回前端")
    @GetMapping("getData")
    public R getData(@RequestParam("id") Integer id) {
        List<FieldInfo> fieldInfoList = this.jlnuXlsxManageService.queryObjectById(id);
        if(fieldInfoList.isEmpty()){
            return R.error("9999","无模板数据");
        }
        return R.suc(fieldInfoList);
    }

}
